<template>
  <div ref="chart" style="width: 100%; height: 600px;"></div>
</template>

<script>
import * as echarts from 'echarts';

export default {
  name: 'RoseChart',
  data() {
    return {
      myChart: null,
      chartOption: {
        legend: {
          top: 'bottom'
        },
        toolbox: {
          show: true,
          feature: {
            mark: {show: true},
            dataView: {show: true, readOnly: false},
            restore: {show: true},
            saveAsImage: {show: true}
          }
        },
        series: [
          {
            name: 'Nightingale Chart',
            type: 'pie',
            radius: [50, 250],
            center: ['50%', '50%'],
            roseType: 'area',
            itemStyle: {
              borderRadius: 8
            },
            data: [
              {value: 40, name: 'rose 1'},
              {value: 38, name: 'rose 2'},
              {value: 32, name: 'rose 3'},
              {value: 30, name: 'rose 4'},
              {value: 28, name: 'rose 5'},
              {value: 26, name: 'rose 6'},
              {value: 22, name: 'rose 7'},
              {value: 18, name: 'rose 8'}
            ]
          }
        ]
      }
    };
  },
  mounted() {
    this.initChart();
    window.addEventListener('resize', this.handleResize);
  },
  beforeDestroy() {
    window.removeEventListener('resize', this.handleResize);
    if (this.myChart) {
      this.myChart.dispose();
    }
  },
  methods: {
    initChart() {
      this.myChart = echarts.init(this.$refs.chart);
      this.myChart.setOption(this.chartOption);
    },
    handleResize() {
      this.myChart && this.myChart.resize();
    },
    // 如果需要更新数据的方法
    updateChart(newData) {
      this.chartOption.series[0].data = newData;
      this.myChart.setOption(this.chartOption);
    }
  },
  watch: {
    // 深度监听数据变化
    'chartOption.series': {
      deep: true,
      handler() {
        if (this.myChart) {
          this.myChart.setOption(this.chartOption);
        }
      }
    }
  }
};
</script>

<style scoped>
/* 可以添加自定义样式 */
</style>
